package com.zmm.zebulon.module.trade.biz.service.price;

import com.zmm.zebulon.module.trade.biz.dal.bo.price.TradePriceCalculateReqBO;
import com.zmm.zebulon.module.trade.biz.dal.bo.price.TradePriceCalculateRespBO;
import com.zmm.zebulon.module.trade.biz.dal.vo.order.AppTradeProductSettlementRespVO;

import javax.validation.Valid;
import java.util.List;

/**
 * description: 价格计算 Service 接口
 *
 * @author zebulon
 * package com.zmm.zebulon.module.trade.biz.service.price
 * name: TradePriceService
 * date 2025/9/4 17:03
 */
public interface TradePriceService {

    /**
     * 【订单】价格计算
     *
     * @param calculateReqDTO 计算信息
     * @return 计算结果
     */
    TradePriceCalculateRespBO calculateOrderPrice(@Valid TradePriceCalculateReqBO calculateReqDTO);

    /**
     * 【商品】价格计算，用于商品列表、商品详情
     *
     * @param userId 用户编号，允许为空
     * @param spuIds 商品 SPU 编号数组
     * @return 计算结果
     */
    List<AppTradeProductSettlementRespVO> calculateProductPrice(Long userId, List<Long> spuIds);


}
